home *** CD-ROM | disk | FTP | other *** search
/ Floral Tapestry / Floral Tapestry.iso / for_pc / pixsetup.ms_ < prev    next >
Text File  |  1994-06-05  |  24KB  |  892 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit PixFolio
  3. '**************************************************************************
  4. ''  Revised Pixfolio Setup Script
  5. ''   Feb 94: David H. Goeb
  6. ''   Apr 94: David H. Goeb
  7.  
  8. ''   Additions
  9. ''     Changed to have PCD files as part of application files
  10. ''     Added a WIN.INI check function to see if catalog was 
  11. ''      already installed, and also check if new version.
  12. ''      All Aztech Text files are also added to the program group
  13. ''      Further Enhancements are custom Install call and Multi
  14. ''      Catalog support
  15. ''     Additional bug fixes and addition of gems catalog
  16.  
  17. '' Additions For floral tapestry
  18.  
  19. ''$DEFINE DEBUG  ''Define for script development/debugging
  20.  
  21. '$INCLUDE 'setupapi.inc'
  22. '$INCLUDE 'msdetect.inc'
  23. '$INCLUDE 'mscuistf.inc'
  24.  
  25. ''Dialog ID's
  26. CONST WELCOME       = 100
  27. CONST ASKQUIT       = 200
  28. CONST DESTPATH      = 300
  29. CONST EXITFAILURE   = 400
  30. CONST EXITQUIT      = 600
  31. CONST EXITSUCCESS   = 700
  32. CONST EXITREGISTERED= 750
  33. CONST OPTIONS       = 800
  34. CONST APPHELP       = 900
  35. CONST CUSTHELP      = 910
  36. CONST REGHELP       = 920
  37. CONST CUSTINST      = 6200
  38. CONST TOOBIG        = 6300
  39. CONST NOAVI         = 6350
  40. CONST NOAPP         = 6360
  41. CONST BADPATH       = 6400
  42. CONST CDGETNAMEORG  = 7500
  43. CONST MODELESS      = 5000
  44. CONST QUITWIN       = 6500
  45.  
  46. ''Bitmap ID
  47. CONST LOGO = 1
  48.  
  49. ''File Types
  50. CONST APPFILES     = 1
  51. CONST OPTFILES1    = 2
  52. CONST OPTFILES2    = 3
  53. CONST OPTFILES3    = 4
  54. CONST SYMFILES     = 5
  55. CONST CATFILES     = 6
  56. ''================================
  57. GLOBAL CATCOST%
  58.  
  59. GLOBAL CC$
  60.  
  61. GLOBAL DEST$        ''Default destination directory.
  62. GLOBAL WINDRIVE$    ''Windows drive letter.
  63. GLOBAL OPTCUR$      ''Option selection from option dialog.
  64. GLOBAL CUIDLL$      ''Custom user interface DLL
  65. GLOBAL szTempDir$   ''Working directory
  66. GLOBAL SysDir$      ''Windows System Directory
  67. GLOBAL ini$         ''INI file path
  68. GLOBAL astr$        ''Usefull little string
  69.  
  70. GLOBAL NOPT$     ''Option selection from OptFiles1 option dialog.
  71.  
  72. GLOBAL OPT1OPT$     ''?? Option selection from OptFiles1 option dialog.
  73. GLOBAL OPT2OPT$     ''?? Option selection from OptFiles2 option dialog.
  74. GLOBAL OPT3OPT$
  75. GLOBAL SYMOPT$      ''Option selection for symbol files.
  76.  
  77. ''CustInst list symbol names
  78. GLOBAL APPNEEDS$    ''Option list costs per drive
  79. GLOBAL OPT1NEEDS$
  80. GLOBAL OPT2NEEDS$
  81. GLOBAL OPT3NEEDS$   ''Multimedia files
  82. GLOBAL SYMNEEDS$
  83. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  84. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  85.  
  86. ''Dialog list symbol names
  87. GLOBAL CHECKSTATES$
  88. GLOBAL STATUSTEXT$
  89. GLOBAL DRIVETEXT$
  90.  
  91.  
  92. DECLARE SUB AddOptFilesToCopyList (ftype%)
  93. DECLARE SUB RecalcOptFiles (ftype%)
  94. DECLARE SUB RecalcPath
  95. DECLARE SUB SetDriveStatus
  96. DECLARE SUB Install
  97. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  98.  
  99.  
  100. INIT:
  101.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  102.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  103.  
  104.     SetBitmap CUIDLL$, LOGO
  105.     SetTitle "PixFolio Setup"
  106.     szTempDir$ = GetSymbolValue("STF_CWDDIR")
  107.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  108.     IF szInf$ = "" THEN
  109.        szInf$ = GetSymbolValue("STF_CWDDIR") + "PIXSETUP.INF"
  110.     END IF
  111.     ReadInfFile szInf$
  112.     '' Force Catalog to be include unless selected off
  113.  
  114.     NOPT$ = "1"
  115.  
  116.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  117. ''    DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  118.     DEST$ = ".............................................................................................................................."
  119.     GetPixDir DEST$
  120.     if DEST$ = "" THEN
  121.         DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  122.     END IF
  123.     ini$ = MakePath(GetWindowsDir, "WIN.INI")
  124.  
  125.     ''CustInst list symbols
  126.     CHECKSTATES$ = "CheckItemsState"
  127.     STATUSTEXT$  = "StatusItemsText"
  128.     DRIVETEXT$   = "DriveStatusText"
  129. '   FOR i% = 1 TO 3 STEP 1
  130.         AddListItem CHECKSTATES$, "ON"  '' Main program files
  131.         AddListItem CHECKSTATES$, "ON"  '' PCD files
  132.         AddListItem CHECKSTATES$, "OFF" '' VFW
  133.         AddListItem CHECKSTATES$, "ON" '' Multimedia
  134.         AddListItem CHECKSTATES$, "OFF" '' Symbols
  135. '    NEXT i%
  136.     FOR i% = 1 TO 5 STEP 1
  137.         AddListItem STATUSTEXT$, ""
  138.     NEXT i%
  139.     FOR i% = 1 TO 7 STEP 1
  140.         AddListItem DRIVETEXT$, ""
  141.     NEXT i%
  142.     ReplaceListItem DRIVETEXT$, 7, DEST$
  143.  
  144.     ''Disk cost list symbols
  145.     APPNEEDS$   = "AppNeeds"
  146.     OPT1NEEDS$  = "Opt1Needs"
  147.     OPT2NEEDS$  = "Opt2Needs"
  148.     OPT3NEEDS$  = "Opt3Needs"
  149.     SYMNEEDS$   = "SymNeeds"
  150.     EXTRACOSTS$ = "ExtraCosts"
  151.     BIGLIST$    = "BigList"
  152.     FOR i% = 1 TO 5 STEP 1
  153.         AddListItem BIGLIST$, ""
  154.     NEXT i%
  155.     FOR i% = 1 TO 26 STEP 1
  156.         AddListItem EXTRACOSTS$, "0"
  157.     NEXT i%
  158.  
  159.     ''File Option Variables
  160.     OPT1OPT$ = "1"
  161.     OPT2OPT$ = "1"
  162.     OPT3OPT$ = "1"
  163.     SYMOPT$  = "1"
  164.  
  165.     SysDir$ = GetWindowsSysDir()
  166.     RecalcPath
  167. ''    i% = DoMsgBox("RecalcPath OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  168.     SetDriveStatus
  169. ''    i% = DoMsgBox("SetDriveStatus OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  170.  
  171.  
  172.      OPTCUR$ = "1"
  173. '    DEST$ = "C:\PIXFOLIO"
  174.  
  175. '$IFDEF DEBUG
  176.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  177.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  178.     IF IsDriveValid(WinDrive$) = 0 THEN
  179.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  180.     GOTO QUIT
  181.     END IF
  182. '$ENDIF ''DEBUG
  183.  
  184.  
  185. WELCOME:
  186.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  187.     IF sz$ = "CONTINUE" THEN
  188.     UIPop 1
  189.     ELSE
  190.     GOSUB ASKQUIT
  191.     GOTO WELCOME
  192.     END IF
  193.  
  194.  
  195. OPTION:
  196.     SetSymbolValue "RadioDefault", OPTCUR$
  197. OPTL1:
  198.  
  199.     NOPT$ = "0"
  200.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  201.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  202.  
  203. '$IFDEF DEBUG
  204.      i% = DoMsgBox("Result ('"+OPTCUR$+"') Was Returned.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  205. '$ENDIF ''DEBUG
  206.  
  207.     IF OPTCUR$ = "1" THEN
  208.       NOPT$ = "0"
  209.     ELSE
  210.       NOPT$ = "1"
  211.     END IF
  212.  
  213.     IF sz$ = "CONTINUE" THEN
  214.     UIPop(1)
  215.     ELSEIF sz$ = "REACTIVATE" THEN
  216.     GOTO OPTL1
  217.     ELSE
  218.     GOSUB ASKQUIT
  219.     GOTO OPTION
  220.     END IF
  221.  
  222.  
  223. CUSTINST:
  224.     SetDriveStatus
  225.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  226.  
  227.     IF sz$ = "CONTINUE" THEN
  228.         ''Install only if it will fit.
  229.         FOR i% = 1 TO 5 STEP 1
  230.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  231.                 GOSUB TOOBIG
  232.                 GOTO CUSTINST
  233.             END IF
  234.         NEXT i%
  235.         UIPop 1
  236.         GOTO INSTALLIT
  237.     ELSEIF sz$ = "PATH" THEN
  238.         GOTO GETPATH
  239.     ELSEIF sz$ = "CHK1" THEN
  240.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 0 AND GetListItem(CHECKSTATES$, APPFILES) = "OFF" THEN
  241.             GOSUB NOAPP
  242.             GOTO CUSTINST
  243.         END IF
  244.         RecalcOptFiles APPFILES
  245.         RecalcOptFiles SYMFILES
  246.         SetDriveStatus
  247.         GOTO CUSTINST
  248.     ELSEIF sz$ = "CHK2" THEN
  249.         RecalcOptFiles OPTFILES1
  250.         RecalcOptFiles SYMFILES
  251.         SetDriveStatus
  252.         GOTO CUSTINST
  253.     ELSEIF sz$ = "CHK3" THEN
  254.         IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  255.             IF CheckForAVI = 0 THEN
  256.                 GOSUB NOAVI
  257.                 ReplaceListItem CHECKSTATES$, OPTFILES2, "OFF"
  258.             END IF
  259.         END IF
  260.         RecalcOptFiles OPTFILES2
  261.         RecalcOptFiles SYMFILES
  262.         SetDriveStatus
  263.         GOTO CUSTINST
  264.     ELSEIF sz$ = "CHK4" THEN
  265.         RecalcOptFiles OPTFILES3
  266.         RecalcOptFiles SYMFILES
  267.         SetDriveStatus
  268.         GOTO CUSTINST
  269.     ELSEIF sz$ = "CHK5" THEN
  270.         RecalcOptFiles SYMFILES
  271.         SetDriveStatus
  272.         GOTO CUSTINST
  273.  
  274.     ELSEIF sz$ = "BTN2" THEN
  275.         GOTO OPTFILES1
  276.     ELSEIF sz$ = "BTN3" THEN
  277.         GOTO OPTFILES2
  278.     ELSEIF sz$ = "BTN4" THEN
  279.         GOTO OPTFILES3
  280.     ELSEIF sz$ = "BTN5" THEN
  281.         GOTO SYMFILES
  282.     ELSEIF sz$ = "REACTIVATE" THEN
  283.         RecalcPath
  284.         SetDriveStatus
  285.         GOTO CUSTINST
  286.     ELSE
  287.         GOTO OPTION
  288.         '' Allow to reverse back to change CD option
  289.         ''GOSUB ASKQUIT
  290.         ''GOTO CUSTINST
  291.     END IF
  292.  
  293.  
  294. GETPATH:
  295.     SetSymbolValue "EditTextIn", DEST$
  296.     SetSymbolValue "EditFocus", "END"
  297. GETPATHL1:
  298.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  299.  
  300.     IF sz$ = "CONTINUE" THEN
  301.         olddest$ = DEST$
  302.         DEST$ = GetSymbolValue("EditTextOut")
  303.  
  304.         ''Validate new path.
  305.         IF IsDirWritable(DEST$) = 0 THEN
  306.             GOSUB BADPATH
  307.             GOTO GETPATHL1
  308.         END IF
  309.         UIPop 1
  310.  
  311.         ''Truncate display if too long.
  312.         IF LEN(DEST$) > 23 THEN
  313.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  314.         ELSE
  315.             ReplaceListItem DRIVETEXT$, 7, DEST$
  316.         END IF
  317.  
  318.         ''Recalc if path changed.
  319.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  320.             RecalcPath
  321.             SetDriveStatus
  322.         END IF
  323.  
  324.         olddest$ = ""
  325.         GOTO CUSTINST
  326.     ELSEIF sz$ = "REACTIVATE" THEN
  327.         RecalcPath
  328.         SetDriveStatus
  329.         GOTO GETPATHL1
  330.     ELSEIF sz$ = "EXIT" THEN
  331.         GOSUB ASKQUIT
  332.         GOTO GETPATHL1
  333.     ELSE
  334.         UIPop 1
  335.         GOTO CUSTINST
  336.     END IF
  337.  
  338. INSTALLIT:
  339.     SetSymbolValue "SERIAL", "2X09AA001302"
  340.     SetSymbolValue "OWNER", "Aztech New Media Corp."
  341.     IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 1 THEN
  342.         l& = GetStringTable(DEST$)
  343.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.INI"), femReadWrite) = 1 THEN
  344.             ini$ = MakePath(DEST$, "PIXFOLIO.INI")
  345.         END IF
  346.     END IF
  347.     SERIAL$ = GetSymbolValue("SERIAL")
  348.     OWNER$  = GetSymbolValue("OWNER")
  349.     SERIAL1$ = GetIniKeyString(ini$, "PixFolio", "Registration Nbr")
  350.     OWNER1$ = GetIniKeyString(ini$, "PixFolio", "Registered To")
  351. '*    i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  352.  
  353.     IF ValidateReg(SERIAL1$) = 1 THEN
  354.         SERIAL$ = SERIAL1$
  355.         OWNER$ = OWNER1$
  356. '*        i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  357.     END IF
  358.     SetSymbolValue "SERIAL", SERIAL$
  359.     SetSymbolValue "OWNER", OWNER$
  360.  
  361.     Install
  362.  
  363.     IF(DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 OR DoesFileExist(MakePath(DEST$, "PIXAVI.DLL"), femReadWrite) = 1) AND MID$(SERIAL$, 6, 1) <> "B" THEN
  364.         GOTO GETSERIAL
  365.     END IF
  366.  
  367.     IF ValidateReg(SERIAL$) = 1 THEN
  368.         GOTO UPDATEIT
  369.     END IF
  370.  
  371. GETSERIAL:
  372.  
  373.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", REGHELP, HELPPROC$)
  374.     DEST$ = GetSymbolValue("EditTextOut")
  375.  
  376.     IF sz$ = "CONTINUE" THEN
  377.         UIPop 1
  378.     ELSEIF sz$ = "CANCEL" THEN
  379.         UIPop 1
  380.     ELSE
  381.         GOSUB ASKQUIT
  382.         GOTO GETSERIAL
  383.     END IF
  384.  
  385.     SERIAL$ = GetSymbolValue("SERIAL")
  386.     OWNER$  = GetSymbolValue("OWNER")
  387.  
  388. UPDATEIT:
  389.     IF ValidateReg(SERIAL$) = 1 THEN
  390. '*        l& = PutStringTable(DEST$)
  391.         CreateIniKeyValue ini$, "PixFolio", "Registration Nbr", SERIAL$, cmoOverwrite
  392.         CreateIniKeyValue ini$, "PixFolio", "Registered To", OWNER$, cmoOverwrite
  393.     ELSE
  394.         CreateProgmanItem "PixFolio", "Register", "notepad.exe "+MakePath(DEST$,"PIXREGST.FRM"), "", cmoOverwrite
  395.     END IF
  396.  
  397. '*    Install
  398. QUITWIN:
  399.     ii% = RestartListEmpty()
  400.     IF ii% = 0 THEN
  401.         sz$ = UIStartDlg(CUIDLL$, QUITWIN, "FQuitWinDlgProc", 0, "")
  402.         IF sz$ = "CONTINUE" THEN
  403.             UIPop 1
  404.         ELSEIF sz$ = "REACTIVATE" THEN
  405.             GOTO QUITWIN
  406.         ELSE
  407.             GOSUB ASKQUIT
  408.             GOTO QUITWIN
  409.         END IF
  410.         ij% = ExitExecRestart()
  411.     END IF
  412.  
  413.  
  414. QUIT:
  415.     ON ERROR GOTO ERRQUIT
  416.  
  417.     IF ERR = 0 THEN
  418.         IF ValidateReg(SERIAL$) = 1 THEN
  419.             dlg% = EXITREGISTERED
  420.         ELSE
  421.             dlg% = EXITSUCCESS
  422.         END IF
  423.     ELSEIF ERR = STFQUIT THEN
  424.     dlg% = EXITQUIT
  425.     ELSE
  426.     dlg% = EXITFAILURE
  427.     END IF
  428. QUITL1:
  429.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  430.     IF sz$ = "REACTIVATE" THEN
  431.     GOTO QUITL1
  432.     END IF
  433.     UIPop 1
  434.  
  435.     END
  436.  
  437. ERRQUIT:
  438.     i% = DoMsgBox("Setup sources were corrupted, call (502) 955-7527!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  439.     END
  440.  
  441. OPTFILES1:
  442.     SetSymbolValue "RadioDefault", OPT1OPT$
  443. OPT1L1:
  444.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  445.     newopt$ = GetSymbolValue("ButtonChecked")
  446.  
  447.     IF sz$ = "CONTINUE" THEN
  448.         UIPop 1
  449.         IF newopt$ <> OPT1OPT$ THEN
  450.             OPT1OPT$ = newopt$
  451.             RecalcOptFiles OPTFILES1
  452.             SetDriveStatus
  453.         END IF
  454.         newopt$ = ""
  455.         GOTO CUSTINST
  456.     ELSEIF sz$ = "REACTIVATE" THEN
  457.         RecalcPath
  458.         SetDriveStatus
  459.         GOTO OPT1L1
  460.     ELSEIF sz$ = "EXIT" THEN
  461.         GOSUB ASKQUIT
  462.         GOTO OPT1L1
  463.     ELSE
  464.         UIPop 1
  465.         newopt$ = ""
  466.         GOTO CUSTINST
  467.     END IF
  468.  
  469.  
  470.  
  471. OPTFILES2:
  472.     SetSymbolValue "RadioDefault", OPT2OPT$
  473. OPT2L1:
  474.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  475.     newopt$ = GetSymbolValue("ButtonChecked")
  476.  
  477.     IF sz$ = "CONTINUE" THEN
  478.         UIPop 1
  479.         IF newopt$ <> OPT2OPT$ THEN
  480.             OPT2OPT$ = newopt$
  481.             RecalcOptFiles OPTFILES2
  482.             SetDriveStatus
  483.         END IF
  484.         newopt$ = ""
  485.         GOTO CUSTINST
  486.     ELSEIF sz$ = "REACTIVATE" THEN
  487.         RecalcPath
  488.         SetDriveStatus
  489.         GOTO OPT2L1
  490.     ELSEIF sz$ = "EXIT" THEN
  491.         GOSUB ASKQUIT
  492.         GOTO OPT2L1
  493.     ELSE
  494.         UIPop 1
  495.         newopt$ = ""
  496.         GOTO CUSTINST
  497.     END IF
  498.  
  499. OPTFILES3:
  500.     SetSymbolValue "RadioDefault", OPT3OPT$
  501. OPT3L1:
  502.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  503.     newopt$ = GetSymbolValue("ButtonChecked")
  504.  
  505.     IF sz$ = "CONTINUE" THEN
  506.         UIPop 1
  507.         IF newopt$ <> OPT3OPT$ THEN
  508.             OPT3OPT$ = newopt$
  509.             RecalcOptFiles OPTFILES3
  510.             SetDriveStatus
  511.         END IF
  512.         newopt$ = ""
  513.         GOTO CUSTINST
  514.     ELSEIF sz$ = "REACTIVATE" THEN
  515.         RecalcPath
  516.         SetDriveStatus
  517.         GOTO OPT3L1
  518.     ELSEIF sz$ = "EXIT" THEN
  519.         GOSUB ASKQUIT
  520.         GOTO OPT3L1
  521.     ELSE
  522.         UIPop 1
  523.         newopt$ = ""
  524.         GOTO CUSTINST
  525.     END IF
  526.  
  527. SYMFILES:
  528.     SetSymbolValue "RadioDefault", SYMOPT$
  529. OPTSL1:
  530.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  531.     newopt$ = GetSymbolValue("ButtonChecked")
  532.  
  533.     IF sz$ = "CONTINUE" THEN
  534.         UIPop 1
  535.         IF newopt$ <> SYMOPT$ THEN
  536.             SYMOPT$ = newopt$
  537.             RecalcOptFiles SYMFILES
  538.             SetDriveStatus
  539.         END IF
  540.         newopt$ = ""
  541.         GOTO CUSTINST
  542.     ELSEIF sz$ = "REACTIVATE" THEN
  543.         RecalcPath
  544.         SetDriveStatus
  545.         GOTO OPTSL1
  546.     ELSEIF sz$ = "EXIT" THEN
  547.         GOSUB ASKQUIT
  548.         GOTO OPTSL1
  549.     ELSE
  550.         UIPop 1
  551.         newopt$ = ""
  552.         GOTO CUSTINST
  553.     END IF
  554.  
  555.  
  556. TOOBIG:
  557.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  558.     IF sz$ = "REACTIVATE" THEN
  559.         RecalcPath
  560.         SetDriveStatus
  561.         GOTO TOOBIG
  562.     END IF
  563.     UIPop 1
  564.     RETURN
  565.  
  566. NOAVI:
  567.     sz$ = UIStartDlg(CUIDLL$, NOAVI, "FInfo0DlgProc", 0, "")
  568.     IF sz$ = "REACTIVATE" THEN
  569.         RecalcPath
  570.         SetDriveStatus
  571.         GOTO NOAVI
  572.     END IF
  573.     UIPop 1
  574.     RETURN
  575.  
  576. NOAPP:
  577.     sz$ = UIStartDlg(CUIDLL$, NOAPP, "FInfo0DlgProc", 0, "")
  578.     IF sz$ = "REACTIVATE" THEN
  579.         RecalcPath
  580.         SetDriveStatus
  581.         GOTO NOAPP
  582.     END IF
  583.     UIPop 1
  584.     RETURN
  585.  
  586.  
  587. BADPATH:
  588.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  589.     IF sz$ = "REACTIVATE" THEN
  590.     GOTO BADPATH
  591.     END IF
  592.     UIPop 1
  593.     RETURN
  594.  
  595.  
  596. ASKQUIT:
  597.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  598.  
  599.     IF sz$ = "EXIT" THEN
  600.     UIPopAll
  601.     ERROR STFQUIT
  602.     ELSEIF sz$ = "REACTIVATE" THEN
  603.     GOTO ASKQUIT
  604.     ELSE
  605.     UIPop 1
  606.     END IF
  607.     RETURN
  608.  
  609.  
  610.  
  611. '**
  612. '** Purpose:
  613. '**     Builds the copy list and performs all installation operations.
  614. '** Arguments:
  615. '**     none.
  616. '** Returns:
  617. '**     none.
  618. '*************************************************************************
  619. SUB Install STATIC
  620.  
  621.       lTicks& = 20
  622.  
  623.       SrcDir$ = GetSymbolValue("STF_SRCDIR")
  624.       CreateDir DEST$, cmoNone
  625.       ClearBillboardList
  626.       AddToBillboardList CUIDLL$, MODELESS, "FModelessDlgProc", lTicks&
  627.  
  628.       OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  629.       WriteToLogFile ""
  630.       WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  631.       WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  632.       WriteToLogFile ""
  633.       WriteToLogFile "May have had to create the directory: " + DEST$
  634.       WriteToLogFile ""
  635.  
  636.       SetRestartDir(szTempDir)
  637.  
  638.       ClearCopyList
  639.       AddOptFilesToCopyList APPFILES
  640.       AddOptFilesToCopyList OPTFILES1
  641.       AddOptFilesToCopyList OPTFILES2
  642.       AddOptFilesToCopyList OPTFILES3
  643.       AddOptFilesToCopyList SYMFILES
  644.  
  645.  
  646.       AddSectionFilesToCopyList "Remove List", SrcDir$, DEST$
  647.  
  648.       IF NOPT$ = "0" THEN
  649.         cat1$ = MakePath(SrcDir$, "FLW_I_"+MID$(SrcDir$,1,1)+".CAT")
  650.        ELSE
  651.         AddSectionFilesToCopyList "flower_"+MID$(SrcDir$,1,1), SrcDir$, DEST$
  652.         cat1$ = MakePath(DEST$, "FLW_I_"+MID$(SrcDir$,1,1)+".CAT")
  653.       END IF
  654.  
  655.       CopyFilesInCopyList
  656.  
  657.       vol$ = "              "
  658.       GetVolume SrcDir$, vol$
  659.       Ext$ = "*.GIF;*.BMP;*.TIF;*.TGA;*.IFF;*.PCX;*.WMF;*.EPS;*.WPG;*.PCD"
  660.       i% = DoesFileExist(cat$, femExists)
  661.       j% = DoesIniSectionExist("WIN.INI", "PixFolio")
  662.       IF i = 1 And j = 0 THEN
  663.         '' CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog1", "Default," + cat$ + "," + Ext$ +"," + vol$ + ",READONLY", cmoNone
  664.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog90", "Floral Tapestry," + cat1$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  665.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  666.     ELSE
  667.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog90", "Floral Tapesty," + cat1$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  668.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  669.     ENDIF
  670.  
  671.     IF DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 THEN
  672.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Resolution", "3", cmoNone
  673.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Format", "2", cmoNone
  674.     END IF
  675.  
  676.     CreateProgmanGroup "PixFolio", "", cmoNone
  677.     ShowProgmanGroup  "PixFolio", 1, cmoNone
  678.     CreateProgmanItem "PixFolio", "PixFolio", MakePath(DEST$,"PixFolio"), "", cmoOverwrite
  679.     CreateProgmanItem "PixFolio", "Read Me", "NotePad.exe "+MakePath(DEST$,"PIXREAD.ME"), "", cmoOverwrite
  680.     CreateProgmanItem "PixFolio", "User Guide", "Write.exe "+MakePath(DEST$,"UsrGuide.wri"), "", cmoOverwrite
  681.     CreateProgmanItem "PixFolio", "License Agreement", "Notepad.exe "+MakePath(DEST$,"LICENSE.TXT"), "", cmoOverwrite
  682.     CreateProgmanItem "PixFolio", "Other Products", "NotePad.exe "+MakePath(DEST$,"OTH_PROD.TXT"), "", cmoOverwrite
  683.     CloseLogFile
  684.  
  685. END SUB
  686.  
  687.  
  688.  
  689. '**
  690. '** Purpose:
  691. '**     Appends a file name to the end of a directory path,
  692. '**     inserting a backslash character as needed.
  693. '** Arguments:
  694. '**     szDir$  - full directory path (with optional ending "\")
  695. '**     szFile$ - filename to append to directory
  696. '** Returns:
  697. '**     Resulting fully qualified path name.
  698. '*************************************************************************
  699. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  700.     IF szDir$ = "" THEN
  701.     MakePath = szFile$
  702.     ELSEIF szFile$ = "" THEN
  703.     MakePath = szDir$
  704.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  705.     MakePath = szDir$ + szFile$
  706.     ELSE
  707.     MakePath = szDir$ + "\" + szFile$
  708.     END IF
  709. END FUNCTION
  710.  
  711. '**
  712. '** Purpose:
  713. '**     Adds the specified option files to the copy list.
  714. '** Arguments:
  715. '**     ftype%  - type of files to add, one of the following:
  716. '**             APPFILES, OPTFILES1, OPTFILES2
  717. '** Returns:
  718. '**     none.
  719. '*************************************************************************
  720. SUB AddOptFilesToCopyList (ftype%) STATIC
  721.  
  722.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  723.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  724.         IF ftype% = APPFILES THEN
  725.             AddSectionFilesToCopyList "PixFolio Files", SrcDir$, DEST$
  726.             AddSectionFilesToCopyList "System Files", SrcDir$, SysDir$
  727.         ELSEIF ftype% = OPTFILES1 THEN
  728.                         '' Not any more
  729.             AddSectionFilesToCopyList "PCD Files", SrcDir$, DEST$
  730.         ELSEIF ftype% = OPTFILES2 THEN
  731.             AddSectionFilesToCopyList "VFW Files", SrcDir$, DEST$
  732.         ELSEIF ftype% = OPTFILES3 THEN
  733.             AddSectionFilesToCopyList "Multimedia Files", SrcDir$, DEST$
  734.         ELSEIF ftype% = SYMFILES THEN
  735. ''            i% = DoMsgBox("AddOptFiles" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  736.             IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  737.                 AddSectionFilesToCopyList "PixFolio Symbols", SrcDir$, DEST$
  738.             END IF
  739.             IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  740.                 AddSectionFilesToCopyList "PCD Symbols", SrcDir$, DEST$
  741.             END IF
  742.             IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  743.                 AddSectionFilesToCopyList "VFW Symbols", SrcDir$, DEST$
  744.             END IF
  745.             IF GetListItem(CHECKSTATES$, OPTFILES3) = "ON" THEN
  746.                 AddSectionFilesToCopyList "Multimedia Symbols", SrcDir$, DEST$
  747.             END IF
  748.         END IF
  749.         SrcDir$ = ""
  750.     END IF
  751. END SUB
  752.  
  753. '**
  754. '** Purpose:
  755. '**     Recalculates disk space for the given option files and sets
  756. '**     the status info symbol "StatusItemsText".
  757. '** Arguments:
  758. '**     ftype% - type of files to add, one of the following:
  759. '**             APPFILES, OPTFILES1, OPTFILES2
  760. '** Returns:
  761. '**     none.
  762. '*************************************************************************
  763. SUB RecalcOptFiles (ftype%) STATIC
  764.     CursorSave% = ShowWaitCursor()
  765.     ClearCopyList
  766.     AddOptFilesToCopyList ftype%
  767. ''    i% = DoMsgBox("Added files to copy list " + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  768.     fExtra% = 0
  769.     IF ftype% = APPFILES THEN
  770.         ListSym$ = APPNEEDS$
  771.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  772.             ''Add extra cost to Windows drive for ini/progman, etc.
  773.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  774.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  775.             fExtra% = 1
  776.         END IF
  777.     ELSEIF ftype% = OPTFILES1 THEN
  778.         ListSym$ = OPT1NEEDS$
  779.     ELSEIF ftype% = OPTFILES2 THEN
  780.         ListSym$ = OPT2NEEDS$
  781.     ELSEIF ftype% = OPTFILES3 THEN
  782.         ListSym$ = OPT3NEEDS$
  783.     ELSEIF ftype% = SYMFILES THEN
  784.         ListSym$ = SYMNEEDS$
  785.     END IF
  786. ''    i% = DoMsgBox("ListSym$ =" + ListSym$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  787.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  788.  
  789.     cost& = 0
  790.  
  791.     FOR i% = 1 TO 26 STEP 1
  792.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  793.     NEXT i%
  794.     IF NOPT$ = "1" THEN
  795.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K (Including Catalog)"
  796.     ELSE
  797.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  798.     END IF
  799.  
  800.  
  801.     IF StillNeed& > 0 THEN
  802.         ReplaceListItem BIGLIST$, ftype%, "YES"
  803.     ELSE
  804.         ReplaceListItem BIGLIST$, ftype%, ""
  805.     END IF
  806.  
  807.     IF fExtra% THEN
  808.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  809.     END IF
  810.     RestoreCursor CursorSave%
  811.     ListSym$ = ""
  812. ''    i% = DoMsgBox("RecalcPath OK" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  813. END SUB
  814.  
  815.  
  816. '**
  817. '** Purpose:
  818. '**     Recalculates disk space and sets option status info according
  819. '**     to the current destination path.
  820. '** Arguments:
  821. '**     none.
  822. '** Returns:
  823. '**     none.
  824. '*************************************************************************
  825. SUB RecalcPath STATIC
  826.  
  827.     CursorSave% = ShowWaitCursor()
  828.  
  829.     RecalcOptFiles APPFILES
  830.     RecalcOptFiles OPTFILES1
  831.     RecalcOptFiles OPTFILES2
  832.     RecalcOptFiles OPTFILES3
  833.     RecalcOptFiles SYMFILES
  834.  
  835.     RestoreCursor CursorSave%
  836. END SUB
  837.  
  838.  
  839. '**
  840. '** Purpose:
  841. '**     Sets drive status info according to latest disk space calcs.
  842. '** Arguments:
  843. '**     none.
  844. '** Returns:
  845. '**     none.
  846. '*************************************************************************
  847. SUB SetDriveStatus STATIC
  848.  
  849.     drive$ = MID$(DEST$, 1, 1)
  850.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  851.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(SYMNEEDS$, ndrive%))
  852.     free& = GetFreeSpaceForDrive(drive$)
  853.  
  854. ''======================================================================
  855. '' Manual posting of catalog size for now until new version is made.
  856. ''======================================================================
  857. '' If catalog on HD is selected add 41472626 to total needed.        
  858.  
  859.     IF NOPT$ = "1" THEN
  860.       cost& = cost& + 21250000
  861.     END IF
  862.  
  863. ''=====================================================================
  864.     
  865.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  866.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  867.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  868.  
  869.     IF drive$ = WINDRIVE$ THEN
  870.         ReplaceListItem DRIVETEXT$, 4, ""
  871.         ReplaceListItem DRIVETEXT$, 5, ""
  872.         ReplaceListItem DRIVETEXT$, 6, ""
  873.     ELSE
  874.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  875.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))
  876.         IF cost& = 0 THEN
  877.             ReplaceListItem DRIVETEXT$, 4, ""
  878.             ReplaceListItem DRIVETEXT$, 5, ""
  879.             ReplaceListItem DRIVETEXT$, 6, ""
  880.         ELSE
  881.             ''IF NOPT$ = "1" THEN
  882.             ''  cost& = cost& + 1146712
  883.             ''END IF
  884.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  885.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  886.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  887.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  888.         END IF
  889.     END IF
  890. END SUB
  891.  
  892.